IB/FB - zjisteni, zda bezi server - nekde v siti

Otázka od: js-delphi@email.cz

4. 8. 2004 9:08

Ahoj panove!
Mam dotaz viz %subjekt%. Umim zjistit pomoci hledani urciteho okna, jestli bezi
IB/FB server na pocitaci, na kterem to testuji, ale ted bych potreboval nejak
zjistit, zda na urcitem jmene stanice bezi IB/FB server.
Diky za pomoc.
Jirka
P.S.:Konkretni priklad by byl super, urcite ho vyuzijou i ostatni...
--------------------------------------------------
Ing. Jiri Sokol; jiri.sokol@seznam.cz; 972 231 187
D6Prof+SP3; WinXPProf+SP1; FB 1.5
programator amater


Odpovedá: Milan Tomes

4. 8. 2004 9:47

const
  IBServerPort = 3050;

function IBServerRunning(AServerName: string): boolean;
var
  Sock: TTCPBlockSocket;
begin
  Sock := TTCPBlockSocket.Create;
  try
    Sock.CreateSocket;
    Sock.Connect(AServerName, IntToStr(IBServerPort));
    Result := Sock.LastError = 0;
    Sock.CloseSocket;
  finally
    freeAndNil(Sock);
  end;
end;

Je to udelane pomoci Synapse a podle postupu, ktery doporucoval P. Cisar.

HTH

S pozdravem

Milan Tomes


> [mailto:delphi-l-owner@clexpert.cz]On Behalf Of js-delphi@email.cz
> Sent: Wednesday, August 04, 2004 10:05 AM
>
> ale ted bych potreboval nejak zjistit, zda na urcitem jmene
> stanice bezi IB/FB server.


Odpovedá: Lukas Gebauer

4. 8. 2004 9:21

> const
> IBServerPort = 3050;
>
> function IBServerRunning(AServerName: string): boolean;
> var
> Sock: TTCPBlockSocket;
> begin
> Sock := TTCPBlockSocket.Create;
> try
> Sock.CreateSocket;
> Sock.Connect(AServerName, IntToStr(IBServerPort));
> Result := Sock.LastError = 0;
> Sock.CloseSocket;
> finally
> freeAndNil(Sock);
> end;
> end;

male doplneni... volani Sock.CreateSocket neni treba. Pokud socket
neexistuje, vytvori se sam pri volani metody Connect. To proto, ze az
podle patrametru v metode Connect Synapse teprve pozna, jestli chces
komunikovat pomoci protokolu IPv4 nebo pomoci IPv6.

Ne, ze by tvuj kod byl spatne, nebo fungoval jinak... jen volas
zbytecne funkci, ktera v tvem pripade neudela vubec nic, a je tam jen
pro zpetnou kompatibilitu se starymi verzemi Synapse.  

(Ostatne, ten CloseSocket se taky zavola sam v destruktoru.  




--
Lukas Gebauer.

E-mail: gebauerl@mlp.cz
http://www.ararat.cz/synapse/ - Ararat Synapse - TCP/IP Lib.


Odpovedá: Milan Tomes

4. 8. 2004 9:49

No ja jsem tuhle funkci psal v dobe, kdy to Synapse nedelala automaticky
 

S pozdravem

Milan Tomes

> [mailto:delphi-l-owner@clexpert.cz]On Behalf Of Lukas Gebauer
> Sent: Wednesday, August 04, 2004 10:21 AM
>
> male doplneni... volani Sock.CreateSocket neni treba. Pokud socket
> neexistuje, vytvori se sam pri volani metody Connect. To proto, ze az